Mechanism and apparatus for realistic 3D model creation using interactive scissors

ABSTRACT

A  3 D surface is defined in terms of a set of vertices. The  3 D surface and a pixel array are used to generate a  3 D image. Portions of the  3 D surface are selectively removed using selected criteria. In one embodiment, the  3 D surface is defined in terms of a set of triangles, and the triangles are tested for compliance with selected conditions. For example, the triangles can be tested to determine their slope. Based on these tests, the triangles are excised from the geometric surface. In one embodiment, the selected conditions are based on a combination of the slope of the triangles and the color of the pixels bound to the triangles.

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This patent claims priority based on Provisional U.S. PatentApplication No. 60/118,509, filed Feb. 2, 1999.

BACKGROUND OF THE INVENTION

[0002] This invention pertains to the field of 3D image construction.

[0003] Creating 3D objects in computer graphics is a complex task, whichusually requires special equipment and tools. Conventionally, highquality 3D) objects are created in two stages: at the first stage, thegeometry is created and at the second stage, this geometry is digitallypainted or texture mapped. Both stages are time consuming and expensive.This is typically accomplished using a 3D graphics pipeline.

[0004] U.S. patent application Ser. No. 09/361,470, filed Jul. 27, 1999,incorporated herein by reference in its entirely, describes a method andapparatus for receiving a 2D image, generating a 3D geometry, anddigitally painting the 2D image over that 3D geometry. It is possiblefor the method of our '470 Application to result in certain unnecessaryor anomalous geometric features. The present invention pertains to amethod for excising those features.

[0005] In order to facilitate an explanation of the present invention,we will first describe how a 3D graphics pipeline generates a 3D image.We will then describe a method in accordance with the '470 Applicationfor taking a 2D image and generating in response thereto a 3D image. Wewill then describe a method in accordance with the present invention forremoving undesired geometric elements generated during the a method inaccordance with the '470 Application.

[0006] Description of a 3D Graphics Pipeline

[0007] The following is a simplified, general description of 3D graphicspipelines. It is not intended to describe any specific product (e.g.products mentioned later in this patent). Rather, the followingdescription is merely a general explanation of 3D graphics pipelines toassist the reader's understanding.

[0008] Currently, when creating an image of an object with a 3D graphicspipeline, one provides as inputs to the pipeline a set of geometricsurfaces and a “texture” that is used to “paint” the geometric surfaces.One way of constructing a geometric surface in a graphics pipeline is tocreate a “mesh” of “primitives.” A “primitive” is a small geometricsurface that can be defined by a set of vertices. For example, theprimitive can be a polygon (e.g. a triangle or quadrilateral) definedwithin the pipeline in terms of the locations (in x, y and z coordinatespace) of its corners or vertices. A set of primitives is used to definea larger 3D surface.

[0009] A 3D graphics pipeline constructs a 3D image of an object from a2D texel array (typically called a “texture map”). FIG. 1A illustrates a2D image 2 of a set of “textures” (As will be explained below, thistexture map is used to create the image of an object—in this case, ahouse. Image 2 includes a portion 2 a, which has the appearance ofbricks, portion 2 b, which has the appearance of roof shingles, portion2 c, which has the appearance of a door, and portion 2 d which has theappearance of a window.) 2D image 2 is stored in a digital memory in theform of an array of texels. Each location in the memory stores a texel,which is one or more words of data indicating the color, colorsaturation and brightness corresponding to that texel. The location ofthe texels within the array is typically referred to as u, v coordinates(not to be confused with the Y, U and V signal names used to describecertain video signals). The u, v coordinates are similar to x, ycoordinates of the Cartesian coordinate system. In FIG. 1A, the texelarray is an n by m array, where n and m are integers.

[0010] As mentioned above, FIG. 1A represents a texel array. Physically,the array comprises data loaded into a memory. The texel array is notdisplayed as such on a CRT. Rather, as explained below, the texel arrayis used to create an image that is eventually displayed.

[0011] The next step in the process is to provide or prepare a geometricsurface. In this example, the geometric surface is in the form of a mesh4 of primitives 5 in three dimensional space (FIG. 1B). In the case ofFIG. 1B, the primitives are triangles, but other types of polygons canbe used. The mesh of primitives represents a three-dimensional shape ofan object O in 3D space (in the case of FIG. 1B, the shape of a house).The position of each vertex of each triangle within mesh 4 is stored ina memory in the form of x, y and z Cartesian coordinates, relative tothe object. These coordinates are sometimes referred to as modelcoordinates (“MC”). The process of preparing such a mesh is well-known,and described in standard graphics libraries, such as Real 3D, publishedby Real 3D, a Lockheed Martin Corporation, in 1996, and Direct 3D,published by New Riders Publishing in 1997.

[0012] The mesh of FIG. 1B is not displayed as such. Rather, the mesh ofFIG. 1B is a representation of what is stored in a digital memory.Specifically, the memory stores the locations, in terms of x, y and zcoordinates, of each vertex within mesh 4.

[0013] The next step is to map or “bind” the two-dimensional texture mapof FIG. 1A onto mesh 4 of FIG. 1B. This is accomplished by mapping eachtriangle vertex to a location in the texture map. In effect, a list ofdata points is prepared that associates each vertex of mesh 4 to the u,v coordinates of a particular point (texel) in the texture map of FIG.1A. (The locations in the texture map to which the vertices are boundare sometimes referred to as “control points.”)

[0014] This portion of the process is roughly analogous to anupholsterer choosing a piece of Fabric, and binding it with a few nailsto the corner of a couch being upholstered (the nails are like controlpoints). The upholsterer subsequently asks his apprentice to finishattaching the fabric to the couch. In this case, the 3D graphicspipeline finishes the task instead of an apprentice.

[0015]FIGS. 1A and 1B describe the process by which one texture map(FIG. 1A) is mapped onto one mesh 4 representing one object O. Agraphics pipeline can, and often does, map one or several texture mapsonto the same or several different objects.

[0016] The next step in the process is to set up a “world coordinatemodel” of the various objects to be displayed. This requiresestablishing a position and directional orientation for each object tobe displayed. For example, supposing that instead of a house, twoobjects are to be viewed: a tetrahedron T and a cube C (FIG. 1C). Duringthis portion of the process the pipeline is instructed that cube C is tobe facing in a certain direction, and is to be located partially infront of tetrahedron T relative to a certain frame of reference. Again,the structure of FIG. 1C is not displayed per se. Rather, the graphicspipeline sets up processing of the model coordinates in accordance withthe parameters of the position and orientation of the object.

[0017] The next step is to select a frame of reference. For example, itmight be decided that the “viewer” will want to observe the objects froma position corresponding to a corner of the world coordinate model (e.g.position P in FIG. 1D). Thus, a virtual viewpoint, viewing direction andaperture will be selected. The parameters associated with this “viewer”define the screen coordinate (SC) system. Further, it might be decidedthe viewer will observe these objects with a light source located at aposition L. The graphics pipeline will set up another processing pipe toprocess the world coordinate data into the screen coordinate data whichwill cause a computer screen to display the image as it would beperceived by the observer at position P (e.g. the image of FIG. 1D). Inis other words, the computer screen will provide an image of tetrahedronT and cube C as they would be observed by a viewer if he were standingat position P, and a light source were present at location L. This imagewill be provided initially as a pixel array in a frame buffer and thendisplayed by the computer screen. The image in the frame buffer isrefreshed, i.e. regenerated according to the specifications programmedinto the pipeline, typically at about 50 to 120 times per second. Thereare many different methods for optimizing the pipeline, and minimizingthe time spent processing the invisible parts of the objects, such asthe backside of cube C facing away from the viewer. Such details arewell-known to those skilled in the art, and will not be discussed indetail here.

[0018] During the above-described of process constructing the pixelarray and providing it in the frame buffer, the pipeline a) fetches theportion of texture map 2 “tacked” to the vertices of mesh 4 (andtherefore stretched over each triangle); b) determines how and wherethat portion of the texture map should appear, given the orientation ofthe triangles relative to the viewer and the location of the lightsource; and c) constructs the appropriate bit map pixel array forstorage in the frame buffer. The contents of this frame buffer are thendisplayed as an image on a computer screen.

[0019] Thereafter, the 3D graphics accelerator permits one to manipulatethe displayed objects in any desired manner. For example, if one wantsto rotate the image of tetrahedron T by 45° (FIG. 1E), the 3D graphicsaccelerator facilitates this manipulation. This is accomplished byproviding a new set of parameters in the world coordinate model for thegraphics pipeline indicating the new position and orientation fortetrahedron T. After this occurs, the next time the graphics pipelineregenerates the image stored in the frame buffer, the regenerated imagewill reflect this rotation of tetrahedron T.

[0020] Similarly, suppose that it is desired to display what wouldappear to the viewer if he took ten steps forward from his location atposition P. The next time the graphics pipeline regenerates the image,it will generate and store another pixel array in the frame buffercorresponding to what would appear to such a viewer, and this pixelarray is provided as another image on the computer screen.

[0021] It is thus seen that the graphics pipeline is extremely useful inapplications such as video games, where it is desired to simulate whatwould appear to a game player if he were wandering past a set ofobjects.

[0022] Some graphics pipelines create models of geometric surfaces usingan implicit technique. These surfaces are often described as a functionof the position coordinates, i.e. f (x,y,z), or can also contain somevertices. Control points and additional formulas associated with suchsurfaces are used to bind a digital texel array (e.g. an array as shownin FIG. 1A) to the implicitly defined surface, and the process proceedsas described above. The major difference is that instead of definingsurface areas in terms of primitives with vertices, the surface areasare defined in terms of mathematical equations.

[0023] Method In Accordance with U.S. patent application Ser. No.09/361,470

[0024] Referring to FIG. 2, a method in accordance with our '470Application for creating a 3D model based on a 2D image begins with thestep of providing a) a 2D image 10 (e.g. a book on a table) in the formof an array of pixels; and b) a set of geometric surfaces 12. The 2Dimage can be a photograph generated by a digital camera, a video image,or any other type of image. Our '470 Application explains that thegeometric surfaces can be a grid of polygons or they can be implicitlydefined. For ease of explanation, we will focus primarily on the case inwhich the geometric surfaces are a grid of polygons, and in particular,triangles. In such an embodiment, a memory stores the locations of thevertices of these triangles (in terms of their x, y and z coordinates).(The triangles are not displayed as such. Rather, the locations of thetriangle vertices are stored in a memory.) In a typical embodiment, thetriangles are all located in a common plane.

[0025] Together with the 2D image (provided in the form of an array ofpixels, e.g. pixel array 100 in FIG. 3) additional information aboutimage-related “intrinsic” 3D geometry is provided. Our '470 Applicationrefers to this additional information as “Z array” 104. The data storedwithin the Z array is referred to as a “displacement coefficient.” Whilemost objects are three-dimensional, a picture of an object istwo-dimensional. The Z array contains information (the displacementcoefficients) about the shape of the object depicted in the 2D image.For example, suppose the 2D image is an image of a book on a table (FIG.2A). Books have a certain thickness. The displacement coefficientswithin the Z array describe the object depicted in the 2D pixel array,except instead of containing information about the color, brightness,hue or saturation of the object, the Z array contains informationconcerning the height of the surface of the book. In particular, eachlocation within the Z array stores a displacement coefficient indicatingthe height of a portion of the surface of the book.

[0026] In the '470 method, Z array 104 is “bound” to geometric surfaces102 (step 106 of FIG. 3). This is done in a manner similar to thebinding of a prior art texel array to a geometric surface Thus, eachvertex within geometric surface 102 is associated with a location (interms of x, y coordinates) within Z array 104.

[0027] If a Z array data location bound to a vertex of geometric surface102 is a control point, then the displacement coefficient correspondingto that Z array location is assigned to that vertex. That vertex's Zcoordinate is then displaced by a distance that is proportional to thedisplacement coefficient. In other words, the vertex's coordinates aremodified, and the vertex is moved in the Z direction by a distanceproportional to the displacement coefficient.

[0028] If the Z array location bound to a vertex of geometric surface102 is not a control point then the Z position for that vertex isinterpolated as a weighted sum of the values of its neighbor controlpoints. In other words, the position (in the Z direction) of eachnon-control point vertex is recalculated by interpolation as a functionof the surrounding control point Z positions.

[0029] Thereafter, pixel array 100 is bound to modified geometricsurface 102 in a manner similar to the manner in which conventionaltexel arrays are bound to a geometric surface (step 110 in FIG. 3).

[0030] Thereafter, the parameters for the 3D graphics pipeline areestablished. For example, information 112 is provided corresponding tohow the modified geometric surface is to be positioned in the worldcoordinate system, the location of a virtual viewer, and a location fora virtual lighting source. A 3D ) graphics pipeline takes thisinformation and uses it to render an image (step 114 of FIG. 3) andprovide that image in the form of a pixel array 116 in a frame buffer.The contents of the frame buffer are then displayed on a device such asa CRT.

[0031] The information in the Z array can come from any of a number ofsources, e.g. an image analyzer, a camera equipped to perceive depth,etc. Unfortunately, when using one of these automated techniques forgenerating Z array 104, certain unnecessary modifications to thegeometric surface can be made, and therefore, certain portions of thegeometric surface 102 become unnecessary or undesirable. Accordingly, itwould be desirable to provide a method for removing these portions ofgeometric surface 102 before the image is rendered by the graphicspipeline.

SUMMARY

[0032] A method in accordance with one embodiment of our inventioncomprises the step of selectively eliminating certain portions of ageometric surface to improve the appearance of an image being rendered.In one embodiment, we eliminate portions of a geometric surface thathave too steep a slope. For example, in an embodiment in which thegeometric surface is described in terms of a set of triangles, weperform the step of eliminating those triangles meeting the followingcondition:

max(z0,z1,z 2)−min(z0,z1,z 2)<e.

[0033] where the term “max(z0, z 1, z2)” means the largest z value forany vertex in the triangle, min(z0, z1, z2) means the smallest z valuefor any vertex in the triangle, and e is a threshold variable.

[0034] In another embodiment, we eliminate those triangles in whichmax(z0, z1, z2)-min(z0, z1, z2) falls within a particular range ofvalues.

[0035] In one embodiment of our invention, along with a first pixelarray that contains a two-dimensional image to be bound to the geometricsurface, a second array is provided. In this embodiment, the decision asto which triangles to eliminate is based at least partially on the datacontained in this second array. In one version of this embodiment, thesecond array is an image containing depth information. This depthinformation describes 3 D characteristics of the object depicted in thefirst pixel array.

[0036] In yet another embodiment of our invention, the decision as towhich portions of the geometric surface are to be cut is based on colorinformation in the pixel array. For example, we can eliminate certain“color key” based areas. The decision to eliminate such areas is madebased on a combination of two or more conditions. For example, in oneversion of this embodiment we eliminate those triangles in which max(z0,z1, z2)-min(z0, z1, z2)<e and min(z0, z1, z2)<L, were L is a color keythreshold. L is calculated as a function of the color of the pixels thatare bound to those particular triangles. Triangle elimination can alsobe based on color information alone.

[0037] In one embodiment of our invention, we subdivide portions of thegeometric surface to enhance the sharpness of the cuts that we make tothe geometric surface. For example, for the case in which the geometricsurface comprises a mesh of polygons such as triangles, we subdivide thetriangles into smaller triangles to enhance the sharpness of the cutsthat we make. We also can subdivide each surface (e.g., each triangle)before we selectively eliminate triangles to increase the quality of theimage.

[0038] In one embodiment, the above editing can be done interactively,and the user can decide whether or not to implement a given cut ortriangle subdivision, e.g. after viewing the results of the cut orsubdivision.

BRIEF DESCRIPTION OF THE DRAWINGS

[0039]FIGS. 1A to 1E illustrate the operation of a 3D graphics pipeline.During this operation, a texel array is bound to a geometric surface.

[0040]FIG. 2A illustrates an image of a book on a table.

[0041]FIG. 2B illustrates a model of a flat geometric surface to whichthe image of FIG. 2A is to be bound.

[0042]FIG. 3 is a flow diagram illustrating a method in accordance withour '470 Application.

[0043]FIG. 4A illustrates a 2D image used to generate an image of a 3Dobject during a method in accordance with our '470 Application.

[0044]FIG. 4B illustrates a flat geometric surface.

[0045]FIG. 4C symbolically shows a Z array used to modify the flatgeometric surface of FIG. 4B to reflect the three-dimensional shape ofthe object to be rendered.

[0046]FIG. 4D illustrates the geometric surface of FIG. 4B after it hasbeen modified to reflect the three-dimensional shape of the object to berendered.

[0047]FIG. 4E illustrates a rendered image based on the modifiedgeometric surface of FIG. 4D and the 2D image of FIG. 4A.

[0048]FIG. 4F illustrates the image of FIG. 4E after portions of thegeometric surface of a selected steepness have been excised.

[0049]FIG. 4G illustrates the image of FIG. 4E after different portionsof the geometric surface have been excised.

[0050]FIG. 5 is a block diagram showing a computer system that can beused to perform a method in accordance with the present invention.

[0051]FIG. 6 is a flow diagram illustrating a method in accordance withthe present invention.

DETAILED DESCRIPTION

[0052] As explained above, a method in accordance with our '470Application comprises the steps of:

[0053] 1. providing a 2D image in a pixel array;

[0054] 2. providing a “Z array” which contains information concerning 3Dcharacteristics of the object depicted in the 2D image;

[0055] 3. providing a geometric surface; and

[0056] 4. modifying the geometric surface in accordance with theinformation in the Z array so that the geometric surface reflects theshape of the object depicted in the 2D image.

[0057] Our '470 Application explains:

[0058] 1. The Z array can be generated from any of a number of sources,e.g. an image analyzer or a camera equipped with depth perception.

[0059] 2. Examples of image analyzer algorithms are provided.

[0060] 3. The Z array can be subjected to a filter before being used tomodify the geometric surface.

[0061] An embodiment of our invention can include these features, and asmentioned above, the '470 Application, in its entirety, is incorporatedherein by reference.

[0062]FIGS. 4A to 4E show a highly simplified example of a method inaccordance with the '470 Application for modifying a geometric surface.FIG. 4A illustrates a 2D image 30 including two objects to bedisplayed—a square 31 and a square 32. FIG. 4B illustrates a geometricsurface 33 (an array of triangles) that are to be used by a graphicspipeline to display image 30. Also received is a Z array (symbolicallyshown as a set of vectors in FIG. 4C) which is an array of datacontaining displacement coefficients representing the height of theobjects to be displayed. The data in the Z array is bound to geometricsurface 33, and geometric surface 33 is then modified in accordance withthe Z array. Suppose that the Z array indicates that the height of thesurface of square 31 is to be 1 inch, and the height of square 32 is tobe two inches. Thus, in this example, geometric surface 33 of FIG. 4B ismodified to become geometric surface 33′ of FIG. 4C. (Geometric surfaces33 and 33′ are not displayed as such—rather, they are stored in memoryin the form of vertex locations for each of the triangles in surfaces33, 33′. These locations are in terms of their x, y and z coordinates.)As can be seen, geometric surface 33′ includes two square-shaped raisedsurfaces 31′, 32′, and walls 34, 35, 36 and 37 leading from a planarfloor 38 up to surfaces 31′, 32′. (There is no significance to theseparticular shapes. These are mere examples that are provided to explainthe method of the '470 Application.)

[0063]FIG. 4E shows how a graphics pipeline might generate an imagebased on the Z array, image 30 and geometric surface 33 for a virtualviewer looking at objects 31 and 32 from a position P with a lightingsource L.

[0064] During a method in accordance with the present invention, aftermodifying the geometric surface, but before rendering an image, twotests are performed on each triangle. an elimination threshold test anda zone of action test. If a triangle fails to pass either of thesetests, it is eliminated from the geometric surface, and will not be usedto render an image. (The user can modify the parameters of these testsin real time, thereby editing the image.)

[0065] Our method and apparatus supports multiple criteria and tests forgeometry elimination. These criteria include the following:

[0066] Threshold Criteria

[0067] In one embodiment, we eliminate portions of the geometric surfacebased on the equation F(Z)<E, were F is a function of the surface zcoordinates and E is a threshold number. In a practical case in whichthe geometry primitives are triangles, F(Z) can be simplified asF(z0,z1,z2), where z0, z1, and z2 are z-coordinates of the threevertices of the triangle.

[0068] Below we describe several tests that we believe are useful.

[0069] Steepness Test

[0070] During the steepness test, each triangle is tested to determinewhether the following condition is true:

max(z ₀ , z ₁ , z ₂)−min(z ₀ , z ₁ , Z ₂)<e

[0071] where z₀, z₁ and z₂ are the z coordinate values for the threevertices of a triangle, max( z₀, z₁, Z₂) equals the greatest of thethree z coordinate values, min(z₀, z₁, z₂) equals the smallest of thethree z coordinate values, and e is a selected threshold value. Anytriangles meeting this condition are eliminated. Such elimination oftriangles is useful for isolating selected objects from the backgroundof the image.

[0072] In effect, triangles of a certain steepness are eliminated bythis test. FIG. 4F illustrates the effect on the image of FIG. 4E ofeliminating triangles using this threshold test for a particular valueof e. As can be seen, steep walls 36 and 37 of square 33′ areeliminated.

[0073] Zone of Action Test

[0074] A set of intervals is provided, each interval being characterizedby a lower value and an upper value. For each interval i, each triangleis tested to determine whether max(z₀, z₁, z₂)-min(z₀, z₁, Z₂) is within(a_(i), b_(i)), where a_(i) is the lower bound for interval i and b_(i)is the upper bound for interval i In this way, one can eliminatetriangles having a certain range of steepnesses. Thus, depending uponvalues a_(i), b_(i), application of the zone of action test mighteliminate walls 34 and 35, but not walls 36 and 37. One would thus beleft with an image as shown in FIG. 4G.

[0075] In one embodiment, a_(i) and b_(i) are functions of the color ofthe pixels bound to the triangle vertices. In another embodiment, a_(i)and b_(i) are functions of the color of the pixels bound to the triangleas a whole. To describe this process in another way, the zone ofelimination is determined by image color parameters. For instance thezone of elimination can be all triangles having a certain slope thatdepends upon the luminance of the pixels corresponding to the threevertices.

[0076] In another embodiment, triangles are eliminated as a functionsolely of image color parameters. For example, triangles can beeliminated when luminance of the pixels corresponding to three verticesis between 0.2and 0.3 (in a normalized luminance scale). Alternatively,triangles can be eliminated when the pixels are a certain color, hue orbrightness.

[0077] This flexibility in being able to remove triangles permits one toperform many useful image editing operations. For example, one canseparate one type of image from the background. Alternatively, one canseparate adjacent structures in an image. Typically, an object that onemight want isolated from the background or from other objects isdistinguishable both by its color (or color-related parameters such asluminance) and the slope of its surfaces. Thus, the method and apparatusof our invention are well-adapted to performing such isolation tasks.

[0078] Elimination of triangles within geometric surfaces can be doneinteractively. For example, one might provide a geometry, Z array and 2Dimage, and then display that image. If the image looks inappropriate,one might input to the system a value e, or interval variables a_(i),b_(i). One could then have the graphics pipeline regenerate the image todetermine whether it looks appropriate. This could be done as aniterative image editing process, e g. by providing appropriate commandsand threshold values to CPU 52 via a keyboard. (See FIG. 5 and thedescription of FIG. 5 below.) The threshold values can be the intervalvariables, the value “e” discussed above, or other parameters. In oneembodiment, the various calculations and comparisons, as well as theexcising of triangles, can be performed by CPU 52.

[0079] The excising of triangles can be performed by removing trianglesfrom the list of triangles within a memory array, tagging certaintriangles so that they are ignored by a 3D graphics pipeline duringrendering, or by other techniques. The triangles can be stored in one ofthe memories illustrated in FIG. 5, e.g. memory 58 or 74

[0080] In one embodiment, in lieu of eliminating triangles within thegeometric surface, one can subdivide triangles into other triangles todetermine whether that improves the image. Of importance, eliminatingtriangles without subdividing triangles can result in an image havingjagged edges, particularly if a large triangle size has been chosen forbinding. If one subdivides triangles at those edges the jaggedness ofthe resulting image can be reduced. Each triangle, which supposed to bedeleted in the testing procedure can be additionally subdivided tominimize aliasing. (Subdividing is discussed by Shirman et al., “Fastand Accurate Texture Placement”, IEEE Computer Graphics andApplications, January-February 199, p. 60-66, incorporated herein byreference.)

[0081] Hardware and Software for Practicing An Embodiment of a Method InAccordance With Our Invention

[0082] One embodiment of our invention can be practiced using a PChaving the following:

[0083] 1. A CPU such as a Celeron or Pentium, e.g. as manufactured byIntel, or a K6 processor, e.g. as manufactured by Advanced MicroDevices.

[0084] 2. 32 MB of memory or greater.

[0085] 3. A 3D HW adapter. This is a type of graphics card currentlyavailable on the market. The 3D HW adapter should have 4 MB of memory(preferably 8 MB) and an advanced graphics port (AGP) interface. (An AGPinterface is a type of bus standard that is well-known in the art.)Alternatively, a peripheral connection interface (“PCI”) can be used inlieu of an AGP. The PCI is a type of bus standard that is well known inthe art. Examples of appropriate 3D HW adapters include the TNT-2available from Riva, the AT1 Rage 128, the Matrox G400, the TridentBlade 3D and the S3 Savage.

[0086] 4. The operating system can be Windows 95, Windows 98, Win 2000,or any other operating system that supports direct 3D. The Windowsoperating system includes a standardized platform called Direct X forWindows.

[0087] In one embodiment, a user sets up the flat geometric surface (forexample, a triangle mesh) in the Direct 3D windows environment. The setof instructions is then provided to the graphics pipeline, whichfinishes the rendering process. However, in another embodiment, the PCcomprises a bypass mechanism that permits one to access the hardwareaccelerator directly using a software interface provided by the graphicscard manufacturer.

[0088]FIG. 5 is a block diagram of a computer system 50 for performing amethod in accordance with our invention. Referring to FIG. 5, system 50comprises a CPU 52, e.g. a Pentium 11 class CPU, comprising a cachememory 52 a, a core 52 b and an internal bus 52 c for facilitatingcommunication between core 52 b and cache 52 a. Core 52 b communicatesvia a CPU bus 54 to a system controller 56. System controller 56communicates with the system memory 58 via a memory bus 60. Systemmemory 58 includes a first portion 58 a which stores system memoryprograms and a second portion 58 b that stores the texture maps such asdescribed above.

[0089] Also included in system 50 is a PCI bus 62 for facilitatingcommunication between system controller 56 and I/O devices 64, 66 anddisk drive 68. I/O device 64 can be any type of I/O device. In oneembodiment, I/O device 66 is a video capture card with a driver. Datafrom the video capture card is either loaded by DMA (direct memoryaccess) or CPU 52 into a frame buffer, typically within main memory 58.However, the frame buffer may be in other memories within system 50.

[0090] System 50 also includes an AGP graphics controller 70 comprisinga 3D accelerator. In one embodiment, AGP graphics controller 70communicates with system controller 56 via an AGP bus 72. In analternative embodiment, AGP graphics controller 70 can communicate withsystem controller 56 via PCI bus 62 (e.g. as shown in phantom in FIG.5).

[0091] Graphics controller 70 uses its own local memory 74 to generateand store pixel arrays to be displayed on a video display unit 76.

[0092] It is emphasized that system 50 is only one example of a systemthat performs a method in accordance with our invention Other hardwarecan be used as well.

[0093] The interactive scissors function can be performed by the CPUoperating on information stored within memory 58 pertaining to thelocation of the vertices in the geometric surface. Alternatively, thevalues e, a_(i), and/or b_(i) can be passed to the graphics pipeline,and the graphics pipeline can attend to elimination of undesiredportions of the geometric surface.

[0094]FIG. 6 is a flow diagram schematically showing an embodiment ofone method in accordance with our invention. Referring to FIG. 6, oneprovides a model of a 3D surface that has been modified in accordancewith a Z array, a pixel array that has been bound to the geometricsurface as discussed above. In block 180, an image is rendered by the 3Dgraphics pipeline and displayed on VDU 76. The modified geometricsurface, pixel array, and a set of parameters for testing and removingtriangles within the geometric surface are used to selectively removetriangles from the geometric surface (block 182). During this step,triangles within the geometric surface can be subdivided. Theinformation provided to block 182 can be stored in a memory device, e.g.one of the memory devices in the block diagram of FIG. 5 such as memory58. Alternatively, the testing parameters for removing triangles can beinput by a user. Thereafter, the image is rendered by the 3D graphicspipeline again (block 184). If this image is acceptable, then thisediting procedure is finished (block 186). If not, new parameters areselected for removing triangles from the geometric surface (block 188).These parameters can be selected from memory 58, or can be input by auser. The procedure continues until the image is acceptable. Asmentioned above, the selective removal can be performed by CPU 52.

[0095] While the invention has been described with respect to specificembodiments, those skilled in the art will appreciate that changes canbe made in form and detail without departing from the spirit and scopeof the invention. For example, instead of basing the above calculationson Z axis values, values along other axes or combinations of axes can beused, e.g. the X or Y axes. When generating the Z array, one can use animage analyzer, e.g. as described in our '470 application One can alsodigitally filter the Z array data, e.g. as described in our '470Application. In lieu of defining geometric surfaces in terms oftriangles, other polygons, can be used, e.g. quadrilaterals, pentagons,etc. In yet another embodiment, the geometric surfaces can be definedusing the implicit technique. Accordingly, all such changes come withinour invention.

We claim:
 1. A method comprising the steps of: providing a model of ageometric surface, said model comprising a set of portions of saidgeometric surface, said model being stored in a memory device; andexcising at least some of said portions of said geometric surface inresponse to the slope of said some of said portions.
 2. Method of claim1 further comprising the step of binding an array of color values tosaid geometric surface and displaying an image corresponding to saidcolor values and said geometric surface on a visual display device. 3.Method of claim 1 wherein said model comprises a plurality of polygons.4. Method of claim 3 wherein said polygons are excised in accordancewith the formula Max(A0, A1, . . . An)−Min(A0, A1, . . . An)<e whereMax(A0, A1, . . . An) is the largest coordinate value of any of thepolygon vertex coordinates along an axis, Min(A0, A1, . . . An) is thesmallest z coordinate value of any of the polygon vertex coordinatesalong said axis, and e is a threshold value.
 5. Method of claim 4wherein said axis is the Z axis.
 6. Method of claim 3 wherein saidpolygons are excised in accordance with the formula: a _(i) <Max(A0,A1,.. . An)−Min(A0,A1,. . . An)<b _(i) where Max(A0, A01, . . . An) is thelargest coordinate value of any of the polygon vertex coordinates alongan axis, Min(A0, A1, . . . An) is the smallest coordinate value of anyof the polygon vertex coordinates along said axis, and a_(i) and b_(i)constitute a range of values
 7. Method of claim 6 wherein said axis isthe Z axis.
 8. Method of claim 6 wherein a_(i) and b_(i) are functionsof the color of pixels bound to the polygon.
 9. Method comprising thesteps of providing a model of a geometric surface, said model comprisinga set of portions of said geometric surface, said model being stored ina memory; binding an array of values to said geometric surface; andexcising at least some of said portions of said geometric surface basedon the values bound to said portions of said geometric surface. 10.Method of claim 9 wherein said array of values is a pixel arraycontaining values corresponding a color to be applied to said geometricsurface.
 11. Method of claim 9 wherein said array of values containsinformation corresponding to the luminance to be applied to saidgeometric surface.
 12. Method of claim 9 wherein said array of valuesindicates depth values relating to the position of said geometricsurface.
 13. Method of claim 9 wherein said step of excising is alsoperformed based on the slope of said geometric surface.
 14. Apparatuscomprising: a memory for storing values corresponding to a model of ageometric surface; and means for excising portions of said geometricsurface based on the slope of said portions.
 15. Apparatus of claim 14wherein said means for excising comprises a microprocessor. 16.Apparatus comprising: a memory for storing values corresponding to amodel of a geometric surface; and a memory for storing an arraycontaining values bound to said geometric surface; and means forexcising portions of said geometric surface in response to values storedwithin said memory.
 17. Method comprising: providing a model of ageometric surface, said model comprising a set of portions of saidgeometric surface, said model being stored in a memory device; providingan array containing values; and excising at least some of said portionsof said geometric surface in response to said values.
 18. Method ofclaim 17 wherein said array contains values indicating depth informationof an image.
 19. Method of claim 18 wherein said depth information isused to modify said model of said geometric surface.
 20. Method of claim17 wherein said array contains luminance information.
 21. Method ofclaim 17 wherein said array contains color information.